// for IE8 & IE8-
// 用 this 代替 window 更通用，可在一些非浏览器的 js 环境中使用，例如 ASP in JScript
// IE8 只有在 DevTools 被打开的情况下才可用
if(!this.console){ 
    this.console = {
        log : function(){}
    }
}
if(!console.dir){
    console.dir = console.log;
}

// 用 this 代替 window 更通用，可在一些非浏览器的 js 环境中使用，例如 ASP in JScript
// IE8 只有在 DevTools 被打开的情况下才可用
if(!this.console){ 
	this.console = {
		log : function(){}
	};
}

if(!console.dir){
	console.dir = console.log;
}
// IE 6 不支持，IE7开始支持。
// XMLHttpRequest

// IE8 不支持，IE9开始支持。
if (!Object.create){
    Object.create = function (o) {
        if (arguments.length > 1)throw new Error('Object.create implementation only accepts the first parameter.');
        
        function F() {}
        F.prototype = o;
        return new F();
    };
}



// IE8 不支持，IE9开始支持。
if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}

// IE8 不支持，IE9开始支持。
if(!Function.prototype.bind){
    Function.prototype.bind = function () {
        if (!arguments.length) return this;
        var _ = this, p = Array.prototype.slice.call(arguments), A = p.shift();
        return function () {
            return _.apply(A, p.concat(Array.prototype.slice.call(arguments)))
        }
    }
}

// IE8 不支持，IE9开始支持。
if(!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    }
}

/**
* 一般来讲我们不通过 style.xxx 来获取元素的样式。IE8 不支持，IE9开始支持。
* http://www.w3help.org/zh-cn/causes/BT9008
*/
if (!window.getComputedStyle) {
    window.getComputedStyle = function (el) {
    	return el.currentStyle;
    }
}

function getChildren(){
	var children = [];
	for(var node, childNodes = this.childNodes, i = 0, j = childNodes.length; i < j; i++){
		// for ie8-
		node = childNodes[i];
		
		if(node.nodeType == 1)children.push(elWrapper(node));
	}
	
	return children;
}

//placeholder 占位符
if(window.navigator.isIE6 || window.navigator.isIE7 || window.navigator.isIE8 || window.navigator.isIE9){
	/*
	 * Author: lichen , http://leechan.me
	 * E-mail: chen.ican@gmail.com
	 * Date  : 2012-07-27
	 */
	;(function(doc,win){
		if('placeholder' in doc.createElement('input')){
			return;
		}
		var addEvent = function(obj, type, fn) {
			if (obj.attachEvent) {
				if(obj['e' + type + fn]){
					return;
				}
			    obj['e' + type + fn] = fn;
			    obj[type + fn] = function(){
			    	obj['e' + type + fn](win.event);
			    }
			    obj.attachEvent('on' + type, obj[type + fn]);
			} else {
				obj.addEventListener(type, fn, false);
			}
		}
			 
		var placeHolderFix = function(){
			var inputs = doc.getElementsByTagName('input'), textareas = doc.getElementsByTagName('textarea');

			//input
			for(var i = 0,len = inputs.length; i < len; i++){
				var input = inputs[i], inputAttr = input.getAttribute('placeholder');
				if(input.type !== 'password' && inputAttr){
					input.value = inputAttr;
					var focusHandler = (function(inputAttr){
						return function(){
							if(this.value == inputAttr)this.value = "";
						}
					})(inputAttr);
					var blurHandler = (function(inputAttr){
						return function(){
							if(this.value == "")this.value = inputAttr;
						}
					})(inputAttr);
					addEvent(input,'focus',focusHandler);
					addEvent(input,'blur',blurHandler);
				}
			}

			//textarea
			for(var i = 0,len = textareas.length; i < len; i++){
				var textarea = textareas[i], textareaAttr = textarea.getAttribute('placeholder');
				if(textareaAttr){
					textarea.innerText = textareaAttr;
					var focusHandler = (function(textareaAttr){
						return function(){
							if(this.innerText == textareaAttr)this.innerText = "";
						}
					})(textareaAttr);
					var blurHandler = (function(textareaAttr){
						return function(){
							if(this.innerText == "")this.innerText = textareaAttr;
						}
					})(textareaAttr);
					addEvent(textarea,'focus',focusHandler);
					addEvent(textarea,'blur',blurHandler);
				}
			}
		}
		addEvent(win,'load',placeHolderFix);
	})(document,window);
}